import { createVNode } from "./vnode";

/**
 * 1、根据组建创建虚拟节点
 * 2、将虚拟节点和容器获取到后，再调用 render 方法进行挂载渲染
 * @param render runtime-core 的核心渲染函数
 * @returns 
 */
export function createAppApi(render) {
  return function createApp(rootComponent, rootProps) {
    const app = {
      _props: rootProps,
      _component: rootComponent,
      _container: null,
      mount(container) {
        // console.log('container', container, rootComponent, rootProps, renderOptions)
        // const vnode = {};
        // render(vnode, container);

        // 生成虚拟节点
        const vnode = createVNode(rootComponent, rootProps);

        // 执行 render 函数
        render(vnode, container);

        app._container = container;
      }
    };
  
    return app;
  }
}
